/**
 * @Author: Aerospace
 * @Date: 2021/5/18 12:14
 * @Description: Dream begins
 *
 * 给定一个由若干 0 和 1 组成的数组 A，我们最多可以将 K 个值从 0 变成 1 。
 *
 * 返回仅包含 1 的最长（连续）子数组的长度。
 */
public class LongestOnes {
    public int LongestOnes(int[] nums,int k) {
        int max = 0;
        int left = 0,right = 0;
        for (;right<nums.length;right++){
            if (nums[right]==0){
                if (k == 0){
                    while (nums[left] == 1){
                        left++;
                    }
                    //左边放出一个0
                    left++;
                }else {
                    //始终保证窗口内有k个0
                    k--;
                }
            }
            max = Math.max(max,right-left+1);
        }
        return max;
    }
}
